Ana içeriğe geç

fail2ban nasıl çalışır? Linux Sunucular İçin Kapsamlı Güvenlik Rehberi

Fail2Ban, SSH ve diğer servislerde oluşan başarısız giriş denemelerini izleyerek belirli bir sayıdan sonra saldırgan IP adreslerini otomatik olarak yasaklayan güçlü bir güvenlik aracıdır. Bu rehber, Fail2Ban'in iç mekanizmasını — filtreler, jails, aksiyon dosyaları ve iptables entegrasyonu — derinlemesine açıklar.

📌 Bu rehberde ne öğreneceksiniz?

  • Fail2Ban’in log izleme ve brute-force tespit mantığı
  • Jail, filter ve action dosyalarının nasıl çalıştığı
  • iptables üzerinde ban kurallarının nasıl üretildiği
  • bantime, findtime ve maxretry ayarlarının davranışları
  • Fail2Ban’in tam çalışma akış sırası
  • Filtre regex’lerinin nasıl IP yakaladığı
  • Fail2Ban’in firewall zincirlerini nasıl oluşturduğu

1. Fail2Ban Nedir ve Ne İşe Yarar?

Fail2Ban, log dosyalarını gerçek zamanlı izleyerek tekrar eden başarısız giriş denemelerini tespit eder ve saldırgan IP’leri iptables/nftables üzerinden otomatik şekilde yasaklar.

Koruma sağlanan yaygın hizmetler:

  • SSH
  • Nginx
  • FTP
  • Postfix/Dovecot gibi mail servisleri

Fail2Ban saldırıyı durdurmaz; saldırganı erişim dışı bırakır.


2. Fail2Ban’in Mimarisi

Fail2Ban üç temel bileşenle çalışır:

✔ 1. Filtreler (Filter)

Log dosyalarını regex ile tarar.
Her filtre içinde failregex bulunur.

failregex = ^%(__prefix_line)sFailed password for .* from <HOST>

<HOST> saldırgan IP adresidir.

✔ 2. Hücreler (Jail)

Bir servisin nasıl korunacağını tanımlar.


[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

✔ 3. Eylemler (Action)

Banlama, unban ve firewall yapılarını kontrol eder.


iptables -I fail2ban-ssh 1 -s <ip> -j REJECT

3. Fail2Ban Dosya Hiyerarşisi (Önemli)

Fail2Ban tüm dosyaları şu sırayla okur:

/etc/fail2ban/fail2ban.conf

/etc/fail2ban/jail.conf

/etc/fail2ban/jail.d/*.conf

/etc/fail2ban/jail.local (özelleştirme burada yapılır)

filter.d/*.conf

action.d/*.conf

Bu sıralama nasıl davranacağını belirler.


4. jail.local İçindeki Önemli Parametreler


[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 10m
findtime = 10m
maxretry = 3
banaction = iptables-multiport
chain = INPUT
ParametreAçıklama
ignoreipBanlanmayacak IP’ler
bantimeIP’nin yasak kalma süresi
findtimeMaksimum deneme sayısının ölçüldüğü zaman aralığı
maxretryBu denemeden sonra ban uygulanır
banactionHangi firewall aksiyonu kullanılacak
chainINPUT/FORWARD zinciri

5. Filtre (failregex) Mantığı

Filtre dosyası loglardaki saldırıları yakalar.


failregex = ^%(__prefix_line)sFailed password for .* from <HOST>

Regex şunları yakalar:

başarısız şifre denemeleri

illegal user hataları

authentication failure mesajları

root login refused satırları

Fail2Ban IP adresini line içindeki <HOST>'tan çıkarır.


6. Action (Eylem) Dosyalarının Mantığı

En yaygın aksiyon: iptables-multiport.conf

✔ actionstart — zincir oluşturma


iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp --dport 22 -j fail2ban-ssh

✔ actionban — IP engelleme


iptables -I fail2ban-ssh 1 -s <ip> -j REJECT

✔ actionunban — IP serbest bırakma


iptables -D fail2ban-ssh -s <ip> -j REJECT

7. Fail2Ban’in Tam Çalışma Akışı

  • Konfigürasyon dosyaları yüklenir

  • enabled = true olan jails etkinleştirilir

  • actionstart çalışır → firewall zinciri oluşturulur

  • logpath dosyası izlenmeye başlanır

  • failregex eşleşirse sayaç artar

  • sayaç maxretry’ye ulaşırsa IP banlanır

  • bantime bitince IP unban yapılır

  • Bu loop kesintisiz devam eder.


❓ SSS — Sıkça Sorulan Sorular

1. Yanlışlıkla kendimi banladım. Ne yapmalıyım?


sudo fail2ban-client set sshd unbanip <IP>

2. Banlanan IP’leri nasıl görüntülerim?


sudo fail2ban-client status sshd

3. Hangi firewall’larla uyumlu?

iptables, nftables, ufw, firewalld.

4. Sadece SSH için mi işe yarar?

Hayır, Nginx, Postfix, Dovecot, FTP gibi pek çok servisi koruyabilir.

5. Daha sert güvenlik için önerilen ayarlar?


bantime = 1h
maxretry = 3

🎯 Sonuç

Artık Fail2Ban’in:

log izleme mantığını

filtre regex sistemini

firewall zinciri yapısını

ban/unban mekanizmasını

anahtar teslim şekilde biliyorsun. Bu yapıyı kendi sunucularında hemen uygulayabilir ve güvenliği ciddi şekilde artırabilirsin.